package ace.tool.generate.code.impl.resolver.scheme.model.bo.core.resources.model.dto;

import java.util.Optional;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author caspar
 * @date 2023/11/17 10:27
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DaoEntityModelField {

  /**
   * 模型字段名称
   */
  private String name;
  /**
   * 字段名大写下划线
   */
  private String fieldNameUpperUnderscore;
  /**
   * 模型字段类型
   */
  private String type;

  /**
   * 模型字段类型
   */
  private Class typeClass;

  /**
   * 模型字段备注
   */
  private String remark;

  /**
   * 模型字段扩展备注,用于描述枚举
   */
  private String remarkNotes;

  /**
   * 备注元数据
   */
  private DaoClassFieldRemarkMetaInfo remarkMeta;

  /**
   * java 注释
   */
  private String javaComment;

  /**
   * 是否 id 字段
   */
  private Boolean idFlag;

  /**
   * 是否 可null
   */
  private Boolean nullable;

  /**
   * 字符串长度验证
   */
  private String stringSizeValid;

  /**
   * 列名
   */
  private String columnName;

  /**
   * 列名的变量名
   */
  private String fieldNameForStaticColumnName;

  /**
   * 是否 删除 字段
   */
  private Boolean deleteFieldFlag;

  private Boolean updateTimeFieldFlag;
  private Boolean createTimeFieldFlag;
  private Boolean rowVersionFieldFlag;

  private Optional<DaoEntityModelFieldEnumInfo> enumInfo;
}
